<html lang="zh-CN">

<head>
  <style data-rc-order="prependQueue" data-rc-priority="-999" data-css-hash="ssvk7y" data-token-hash="css-var-r1">
    .css-var-r1 {
      --ant-blue: #1677FF;
      --ant-purple: #722ED1;
      --ant-cyan: #13C2C2;
      --ant-green: #52C41A;
      --ant-magenta: #EB2F96;
      --ant-pink: #EB2F96;
      --ant-red: #F5222D;
      --ant-orange: #FA8C16;
      --ant-yellow: #FADB14;
      --ant-volcano: #FA541C;
      --ant-geekblue: #2F54EB;
      --ant-gold: #FAAD14;
      --ant-lime: #A0D911;
      --ant-color-primary: #24be58;
      --ant-color-success: #52c41a;
      --ant-color-warning: #faad14;
      --ant-color-error: #ff4d4f;
      --ant-color-info: #1677ff;
      --ant-color-link: #24be58;
      --ant-color-text-base: #000;
      --ant-color-bg-base: #fff;
      --ant-font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial,
        'Noto Sans', sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol',
        'Noto Color Emoji';
      --ant-font-family-code: 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, Courier, monospace;
      --ant-font-size: 14px;
      --ant-line-width: 1px;
      --ant-line-type: solid;
      --ant-motion-ease-out-circ: cubic-bezier(0.08, 0.82, 0.17, 1);
      --ant-motion-ease-in-out-circ: cubic-bezier(0.78, 0.14, 0.15, 0.86);
      --ant-motion-ease-out: cubic-bezier(0.215, 0.61, 0.355, 1);
      --ant-motion-ease-in-out: cubic-bezier(0.645, 0.045, 0.355, 1);
      --ant-motion-ease-out-back: cubic-bezier(0.12, 0.4, 0.29, 1.46);
      --ant-motion-ease-in-back: cubic-bezier(0.71, -0.46, 0.88, 0.6);
      --ant-motion-ease-in-quint: cubic-bezier(0.755, 0.05, 0.855, 0.06);
      --ant-motion-ease-out-quint: cubic-bezier(0.23, 1, 0.32, 1);
      --ant-border-radius: 4px;
      --ant-size-popup-arrow: 16px;
      --ant-control-height: 32px;
      --ant-z-index-base: 0;
      --ant-z-index-popup-base: 1000;
      --ant-opacity-image: 1;
      --ant-color-primary-hover: #21AF51;
      --ant-color-text: #262626;
      --ant-color-link-hover: #21AF51;
      --ant-color-link-active: #1e9e48;
      --ant-blue-1: #e6f4ff;
      --ant-blue-2: #bae0ff;
      --ant-blue-3: #91caff;
      --ant-blue-4: #69b1ff;
      --ant-blue-5: #4096ff;
      --ant-blue-6: #1677ff;
      --ant-blue-7: #0958d9;
      --ant-blue-8: #003eb3;
      --ant-blue-9: #002c8c;
      --ant-blue-10: #001d66;
      --ant-purple-1: #f9f0ff;
      --ant-purple-2: #efdbff;
      --ant-purple-3: #d3adf7;
      --ant-purple-4: #b37feb;
      --ant-purple-5: #9254de;
      --ant-purple-6: #722ed1;
      --ant-purple-7: #531dab;
      --ant-purple-8: #391085;
      --ant-purple-9: #22075e;
      --ant-purple-10: #120338;
      --ant-cyan-1: #e6fffb;
      --ant-cyan-2: #b5f5ec;
      --ant-cyan-3: #87e8de;
      --ant-cyan-4: #5cdbd3;
      --ant-cyan-5: #36cfc9;
      --ant-cyan-6: #13c2c2;
      --ant-cyan-7: #08979c;
      --ant-cyan-8: #006d75;
      --ant-cyan-9: #00474f;
      --ant-cyan-10: #002329;
      --ant-green-1: #f6ffed;
      --ant-green-2: #d9f7be;
      --ant-green-3: #b7eb8f;
      --ant-green-4: #95de64;
      --ant-green-5: #73d13d;
      --ant-green-6: #52c41a;
      --ant-green-7: #389e0d;
      --ant-green-8: #237804;
      --ant-green-9: #135200;
      --ant-green-10: #092b00;
      --ant-magenta-1: #fff0f6;
      --ant-magenta-2: #ffd6e7;
      --ant-magenta-3: #ffadd2;
      --ant-magenta-4: #ff85c0;
      --ant-magenta-5: #f759ab;
      --ant-magenta-6: #eb2f96;
      --ant-magenta-7: #c41d7f;
      --ant-magenta-8: #9e1068;
      --ant-magenta-9: #780650;
      --ant-magenta-10: #520339;
      --ant-pink-1: #fff0f6;
      --ant-pink-2: #ffd6e7;
      --ant-pink-3: #ffadd2;
      --ant-pink-4: #ff85c0;
      --ant-pink-5: #f759ab;
      --ant-pink-6: #eb2f96;
      --ant-pink-7: #c41d7f;
      --ant-pink-8: #9e1068;
      --ant-pink-9: #780650;
      --ant-pink-10: #520339;
      --ant-red-1: #fff1f0;
      --ant-red-2: #ffccc7;
      --ant-red-3: #ffa39e;
      --ant-red-4: #ff7875;
      --ant-red-5: #ff4d4f;
      --ant-red-6: #f5222d;
      --ant-red-7: #cf1322;
      --ant-red-8: #a8071a;
      --ant-red-9: #820014;
      --ant-red-10: #5c0011;
      --ant-orange-1: #fff7e6;
      --ant-orange-2: #ffe7ba;
      --ant-orange-3: #ffd591;
      --ant-orange-4: #ffc069;
      --ant-orange-5: #ffa940;
      --ant-orange-6: #fa8c16;
      --ant-orange-7: #d46b08;
      --ant-orange-8: #ad4e00;
      --ant-orange-9: #873800;
      --ant-orange-10: #612500;
      --ant-yellow-1: #feffe6;
      --ant-yellow-2: #ffffb8;
      --ant-yellow-3: #fffb8f;
      --ant-yellow-4: #fff566;
      --ant-yellow-5: #ffec3d;
      --ant-yellow-6: #fadb14;
      --ant-yellow-7: #d4b106;
      --ant-yellow-8: #ad8b00;
      --ant-yellow-9: #876800;
      --ant-yellow-10: #614700;
      --ant-volcano-1: #fff2e8;
      --ant-volcano-2: #ffd8bf;
      --ant-volcano-3: #ffbb96;
      --ant-volcano-4: #ff9c6e;
      --ant-volcano-5: #ff7a45;
      --ant-volcano-6: #fa541c;
      --ant-volcano-7: #d4380d;
      --ant-volcano-8: #ad2102;
      --ant-volcano-9: #871400;
      --ant-volcano-10: #610b00;
      --ant-geekblue-1: #f0f5ff;
      --ant-geekblue-2: #d6e4ff;
      --ant-geekblue-3: #adc6ff;
      --ant-geekblue-4: #85a5ff;
      --ant-geekblue-5: #597ef7;
      --ant-geekblue-6: #2f54eb;
      --ant-geekblue-7: #1d39c4;
      --ant-geekblue-8: #10239e;
      --ant-geekblue-9: #061178;
      --ant-geekblue-10: #030852;
      --ant-gold-1: #fffbe6;
      --ant-gold-2: #fff1b8;
      --ant-gold-3: #ffe58f;
      --ant-gold-4: #ffd666;
      --ant-gold-5: #ffc53d;
      --ant-gold-6: #faad14;
      --ant-gold-7: #d48806;
      --ant-gold-8: #ad6800;
      --ant-gold-9: #874d00;
      --ant-gold-10: #613400;
      --ant-lime-1: #fcffe6;
      --ant-lime-2: #f4ffb8;
      --ant-lime-3: #eaff8f;
      --ant-lime-4: #d3f261;
      --ant-lime-5: #bae637;
      --ant-lime-6: #a0d911;
      --ant-lime-7: #7cb305;
      --ant-lime-8: #5b8c00;
      --ant-lime-9: #3f6600;
      --ant-lime-10: #254000;
      --ant-color-text-secondary: rgba(0, 0, 0, 0.65);
      --ant-color-text-tertiary: rgba(0, 0, 0, 0.45);
      --ant-color-text-quaternary: rgba(0, 0, 0, 0.25);
      --ant-color-fill: rgba(0, 0, 0, 0.15);
      --ant-color-fill-secondary: rgba(0, 0, 0, 0.06);
      --ant-color-fill-tertiary: rgba(0, 0, 0, 0.04);
      --ant-color-fill-quaternary: rgba(0, 0, 0, 0.02);
      --ant-color-bg-solid: rgb(0, 0, 0);
      --ant-color-bg-solid-hover: rgba(0, 0, 0, 0.75);
      --ant-color-bg-solid-active: rgba(0, 0, 0, 0.95);
      --ant-color-bg-layout: #f5f5f5;
      --ant-color-bg-container: #ffffff;
      --ant-color-bg-elevated: #ffffff;
      --ant-color-bg-spotlight: rgba(0, 0, 0, 0.85);
      --ant-color-bg-blur: transparent;
      --ant-color-border: #d9d9d9;
      --ant-color-border-secondary: #f0f0f0;
      --ant-color-primary-bg: #f0fff2;
      --ant-color-primary-bg-hover: #c9f2d1;
      --ant-color-primary-border: #9ae6ab;
      --ant-color-primary-border-hover: #6fd98b;
      --ant-color-primary-active: #159946;
      --ant-color-primary-text-hover: #47cc6f;
      --ant-color-primary-text: #24be58;
      --ant-color-primary-text-active: #159946;
      --ant-color-success-bg: #f6ffed;
      --ant-color-success-bg-hover: #d9f7be;
      --ant-color-success-border: #b7eb8f;
      --ant-color-success-border-hover: #95de64;
      --ant-color-success-hover: #95de64;
      --ant-color-success-active: #389e0d;
      --ant-color-success-text-hover: #73d13d;
      --ant-color-success-text: #52c41a;
      --ant-color-success-text-active: #389e0d;
      --ant-color-error-bg: #fff2f0;
      --ant-color-error-bg-hover: #fff1f0;
      --ant-color-error-bg-filled-hover: #ffdfdc;
      --ant-color-error-bg-active: #ffccc7;
      --ant-color-error-border: #ffccc7;
      --ant-color-error-border-hover: #ffa39e;
      --ant-color-error-hover: #ff7875;
      --ant-color-error-active: #d9363e;
      --ant-color-error-text-hover: #ff7875;
      --ant-color-error-text: #ff4d4f;
      --ant-color-error-text-active: #d9363e;
      --ant-color-warning-bg: #fffbe6;
      --ant-color-warning-bg-hover: #fff1b8;
      --ant-color-warning-border: #ffe58f;
      --ant-color-warning-border-hover: #ffd666;
      --ant-color-warning-hover: #ffd666;
      --ant-color-warning-active: #d48806;
      --ant-color-warning-text-hover: #ffc53d;
      --ant-color-warning-text: #faad14;
      --ant-color-warning-text-active: #d48806;
      --ant-color-info-bg: #e6f4ff;
      --ant-color-info-bg-hover: #bae0ff;
      --ant-color-info-border: #91caff;
      --ant-color-info-border-hover: #69b1ff;
      --ant-color-info-hover: #69b1ff;
      --ant-color-info-active: #0958d9;
      --ant-color-info-text-hover: #4096ff;
      --ant-color-info-text: #1677ff;
      --ant-color-info-text-active: #0958d9;
      --ant-color-bg-mask: rgba(0, 0, 0, 0.45);
      --ant-color-white: #fff;
      --ant-font-size-sm: 12px;
      --ant-font-size-lg: 16px;
      --ant-font-size-xl: 20px;
      --ant-font-size-heading-1: 38px;
      --ant-font-size-heading-2: 30px;
      --ant-font-size-heading-3: 24px;
      --ant-font-size-heading-4: 20px;
      --ant-font-size-heading-5: 16px;
      --ant-line-height: 1.5714285714285714;
      --ant-line-height-lg: 1.5;
      --ant-line-height-sm: 1.6666666666666667;
      --ant-font-height: 22px;
      --ant-font-height-lg: 24px;
      --ant-font-height-sm: 20px;
      --ant-line-height-heading-1: 1.2105263157894737;
      --ant-line-height-heading-2: 1.2666666666666666;
      --ant-line-height-heading-3: 1.3333333333333333;
      --ant-line-height-heading-4: 1.4;
      --ant-line-height-heading-5: 1.5;
      --ant-control-height-sm: 24px;
      --ant-control-height-xs: 16px;
      --ant-control-height-lg: 40px;
      --ant-motion-duration-fast: 0.1s;
      --ant-motion-duration-mid: 0.2s;
      --ant-motion-duration-slow: 0.3s;
      --ant-line-width-bold: 2px;
      --ant-border-radius-xs: 1px;
      --ant-border-radius-sm: 4px;
      --ant-border-radius-lg: 4px;
      --ant-border-radius-outer: 4px;
      --ant-color-fill-content: rgba(0, 0, 0, 0.06);
      --ant-color-fill-content-hover: rgba(0, 0, 0, 0.15);
      --ant-color-fill-alter: rgba(0, 0, 0, 0.02);
      --ant-color-bg-container-disabled: rgba(0, 0, 0, 0.04);
      --ant-color-border-bg: #ffffff;
      --ant-color-split: rgba(5, 5, 5, 0.06);
      --ant-color-text-placeholder: rgba(0, 0, 0, 0.25);
      --ant-color-text-disabled: rgba(0, 0, 0, 0.25);
      --ant-color-text-heading: #262626;
      --ant-color-text-label: rgba(0, 0, 0, 0.65);
      --ant-color-text-description: rgba(0, 0, 0, 0.45);
      --ant-color-text-light-solid: #fff;
      --ant-color-highlight: #ff4d4f;
      --ant-color-bg-text-hover: rgba(0, 0, 0, 0.06);
      --ant-color-bg-text-active: rgba(0, 0, 0, 0.15);
      --ant-color-icon: rgba(0, 0, 0, 0.45);
      --ant-color-icon-hover: #262626;
      --ant-color-error-outline: rgba(255, 38, 5, 0.06);
      --ant-color-warning-outline: rgba(255, 215, 5, 0.1);
      --ant-font-size-icon: 12px;
      --ant-line-width-focus: 3px;
      --ant-control-outline-width: 2px;
      --ant-control-interactive-size: 16px;
      --ant-control-item-bg-hover: rgba(0, 0, 0, 0.04);
      --ant-control-item-bg-active: #f0fff2;
      --ant-control-item-bg-active-hover: #c9f2d1;
      --ant-control-item-bg-active-disabled: rgba(0, 0, 0, 0.15);
      --ant-control-tmp-outline: rgba(0, 0, 0, 0.02);
      --ant-control-outline: rgba(5, 255, 38, 0.06);
      --ant-font-weight-strong: 600;
      --ant-opacity-loading: 0.65;
      --ant-link-decoration: none;
      --ant-link-hover-decoration: none;
      --ant-link-focus-decoration: none;
      --ant-control-padding-horizontal: 12px;
      --ant-control-padding-horizontal-sm: 8px;
      --ant-padding-xxs: 4px;
      --ant-padding-xs: 8px;
      --ant-padding-sm: 12px;
      --ant-padding: 16px;
      --ant-padding-md: 20px;
      --ant-padding-lg: 24px;
      --ant-padding-xl: 32px;
      --ant-padding-content-horizontal-lg: 24px;
      --ant-padding-content-vertical-lg: 16px;
      --ant-padding-content-horizontal: 16px;
      --ant-padding-content-vertical: 12px;
      --ant-padding-content-horizontal-sm: 16px;
      --ant-padding-content-vertical-sm: 8px;
      --ant-margin-xxs: 4px;
      --ant-margin-xs: 8px;
      --ant-margin-sm: 12px;
      --ant-margin: 16px;
      --ant-margin-md: 20px;
      --ant-margin-lg: 24px;
      --ant-margin-xl: 32px;
      --ant-margin-xxl: 48px;
      --ant-box-shadow:
        0 6px 16px 0 rgba(0, 0, 0, 0.08),
        0 3px 6px -4px rgba(0, 0, 0, 0.12),
        0 9px 28px 8px rgba(0, 0, 0, 0.05);
      --ant-box-shadow-secondary:
        0 6px 16px 0 rgba(0, 0, 0, 0.08),
        0 3px 6px -4px rgba(0, 0, 0, 0.12),
        0 9px 28px 8px rgba(0, 0, 0, 0.05);
      --ant-box-shadow-tertiary:
        0 1px 2px 0 rgba(0, 0, 0, 0.03),
        0 1px 6px -1px rgba(0, 0, 0, 0.02),
        0 2px 4px 0 rgba(0, 0, 0, 0.02);
      --ant-box-shadow-popover-arrow: 2px 2px 5px rgba(0, 0, 0, 0.05);
      --ant-box-shadow-card:
        0 1px 2px -2px rgba(0, 0, 0, 0.16),
        0 3px 6px 0 rgba(0, 0, 0, 0.12),
        0 5px 12px 4px rgba(0, 0, 0, 0.09);
      --ant-box-shadow-drawer-right:
        -6px 0 16px 0 rgba(0, 0, 0, 0.08),
        -3px 0 6px -4px rgba(0, 0, 0, 0.12),
        -9px 0 28px 8px rgba(0, 0, 0, 0.05);
      --ant-box-shadow-drawer-left:
        6px 0 16px 0 rgba(0, 0, 0, 0.08),
        3px 0 6px -4px rgba(0, 0, 0, 0.12),
        9px 0 28px 8px rgba(0, 0, 0, 0.05);
      --ant-box-shadow-drawer-up:
        0 6px 16px 0 rgba(0, 0, 0, 0.08),
        0 3px 6px -4px rgba(0, 0, 0, 0.12),
        0 9px 28px 8px rgba(0, 0, 0, 0.05);
      --ant-box-shadow-drawer-down:
        0 -6px 16px 0 rgba(0, 0, 0, 0.08),
        0 -3px 6px -4px rgba(0, 0, 0, 0.12),
        0 -9px 28px 8px rgba(0, 0, 0, 0.05);
      --ant-box-shadow-tabs-overflow-left: inset 10px 0 8px -8px rgba(0, 0, 0, 0.08);
      --ant-box-shadow-tabs-overflow-right: inset -10px 0 8px -8px rgba(0, 0, 0, 0.08);
      --ant-box-shadow-tabs-overflow-top: inset 0 10px 8px -8px rgba(0, 0, 0, 0.08);
      --ant-box-shadow-tabs-overflow-bottom: inset 0 -10px 8px -8px rgba(0, 0, 0, 0.08);
    }
  </style>
  <style data-rc-order="prependQueue" data-rc-priority="-999" data-css-hash="dtc0gb" data-token-hash="css-var-r1">
    .css-var-r1.ant-modal-css-var {
      --ant-modal-footer-bg: transparent;
      --ant-modal-header-bg: #ffffff;
      --ant-modal-title-line-height: 1.5;
      --ant-modal-title-font-size: 16px;
      --ant-modal-content-bg: #ffffff;
      --ant-modal-title-color: #262626;
      --ant-modal-content-padding: 20px 24px;
      --ant-modal-header-padding: 0px;
      --ant-modal-header-border-bottom: none;
      --ant-modal-header-margin-bottom: 8px;
      --ant-modal-body-padding: 0px;
      --ant-modal-footer-padding: 0px;
      --ant-modal-footer-border-top: none;
      --ant-modal-footer-border-radius: 0px;
      --ant-modal-footer-margin-top: 12px;
      --ant-modal-confirm-body-padding: 0px;
      --ant-modal-confirm-icon-margin-inline-end: 12px;
      --ant-modal-confirm-btns-margin-top: 12px;
    }
  </style>
  <style data-rc-order="prependQueue" data-rc-priority="-999" data-css-hash="y5toin" data-token-hash="19tobz0">
    .css-1939drg a {
      color: var(--ant-color-link);
      text-decoration: var(--ant-link-decoration);
      background-color: transparent;
      outline: none;
      cursor: pointer;
      transition: color var(--ant-motion-duration-slow);
      -webkit-text-decoration-skip: objects;
    }

    .css-1939drg a:hover {
      color: var(--ant-color-link-hover);
    }

    .css-1939drg a:active {
      color: var(--ant-color-link-active);
    }

    .css-1939drg a:active,
    .css-1939drg a:hover {
      text-decoration: var(--ant-link-hover-decoration);
      outline: 0;
    }

    .css-1939drg a:focus {
      text-decoration: var(--ant-link-focus-decoration);
      outline: 0;
    }

    .css-1939drg a[disabled] {
      color: var(--ant-color-text-disabled);
      cursor: not-allowed;
    }
  </style>
  <style data-rc-order="prependQueue" data-rc-priority="-999" data-css-hash="ufpjrn" data-token-hash="19tobz0">
    .css-1939drg.ant-modal-css-var {
      font-family: var(--ant-font-family);
      font-size: var(--ant-font-size);
      box-sizing: border-box;
    }

    .css-1939drg.ant-modal-css-var::before,
    .css-1939drg.ant-modal-css-var::after {
      box-sizing: border-box;
    }

    .css-1939drg.ant-modal-css-var [class^="ant-modal"],
    .css-1939drg.ant-modal-css-var [class*=" ant-modal"] {
      box-sizing: border-box;
    }

    .css-1939drg.ant-modal-css-var [class^="ant-modal"]::before,
    .css-1939drg.ant-modal-css-var [class*=" ant-modal"]::before,
    .css-1939drg.ant-modal-css-var [class^="ant-modal"]::after,
    .css-1939drg.ant-modal-css-var [class*=" ant-modal"]::after {
      box-sizing: border-box;
    }

    .css-1939drg.ant-modal-root .ant-modal-wrap-rtl {
      direction: rtl;
    }

    .css-1939drg.ant-modal-root .ant-modal-centered {
      text-align: center;
    }

    .css-1939drg.ant-modal-root .ant-modal-centered::before {
      display: inline-block;
      width: 0;
      height: 100%;
      vertical-align: middle;
      content: "";
    }

    .css-1939drg.ant-modal-root .ant-modal-centered .ant-modal {
      top: 0;
      display: inline-block;
      padding-bottom: 0;
      text-align: start;
      vertical-align: middle;
    }

    @media (max-width: 767px) {
      .css-1939drg.ant-modal-root .ant-modal {
        max-width: calc(100vw - 16px);
        margin: var(--ant-margin-xs) auto;
      }

      .css-1939drg.ant-modal-root .ant-modal-centered .ant-modal {
        flex: 1;
      }
    }

    .css-1939drg.ant-modal {
      box-sizing: border-box;
      margin: 0 auto;
      padding: 0;
      color: var(--ant-color-text);
      font-size: var(--ant-font-size);
      line-height: var(--ant-line-height);
      list-style: none;
      font-family: var(--ant-font-family);
      pointer-events: none;
      position: relative;
      top: 100px;
      width: auto;
      max-width: calc(100vw - calc(var(--ant-margin) * 2));
      padding-bottom: var(--ant-padding-lg);
    }

    .css-1939drg.ant-modal .ant-modal-title {
      margin: 0;
      color: var(--ant-modal-title-color);
      font-weight: var(--ant-font-weight-strong);
      font-size: var(--ant-modal-title-font-size);
      line-height: var(--ant-modal-title-line-height);
      word-wrap: break-word;
    }

    .css-1939drg.ant-modal .ant-modal-content {
      position: relative;
      background-color: var(--ant-modal-content-bg);
      background-clip: padding-box;
      border: 0;
      border-radius: var(--ant-border-radius-lg);
      box-shadow: var(--ant-box-shadow);
      pointer-events: auto;
      padding: var(--ant-modal-content-padding);
    }

    .css-1939drg.ant-modal .ant-modal-close {
      position: absolute;
      top: calc((calc(calc(var(--ant-line-height-heading-5) * var(--ant-font-size-heading-5)) + calc(var(--ant-padding) * 2)) - var(--ant-control-height)) / 2);
      inset-inline-end: calc((calc(calc(var(--ant-line-height-heading-5) * var(--ant-font-size-heading-5)) + calc(var(--ant-padding) * 2)) - var(--ant-control-height)) / 2);
      z-index: calc(var(--ant-z-index-popup-base) + 10);
      padding: 0;
      color: var(--ant-color-icon);
      font-weight: var(--ant-font-weight-strong);
      line-height: 1;
      text-decoration: none;
      background: transparent;
      border-radius: var(--ant-border-radius-sm);
      width: var(--ant-control-height);
      height: var(--ant-control-height);
      border: 0;
      outline: 0;
      cursor: pointer;
      transition: color var(--ant-motion-duration-mid), background-color var(--ant-motion-duration-mid);
    }

    .css-1939drg.ant-modal .ant-modal-close-x {
      display: flex;
      font-size: var(--ant-font-size-lg);
      font-style: normal;
      line-height: var(--ant-control-height);
      justify-content: center;
      text-transform: none;
      text-rendering: auto;
    }

    .css-1939drg.ant-modal .ant-modal-close:disabled {
      pointer-events: none;
    }

    .css-1939drg.ant-modal .ant-modal-close:hover {
      color: var(--ant-color-icon-hover);
      background-color: var(--ant-color-bg-text-hover);
      text-decoration: none;
    }

    .css-1939drg.ant-modal .ant-modal-close:active {
      background-color: var(--ant-color-bg-text-active);
    }

    .css-1939drg.ant-modal .ant-modal-close:focus-visible {
      outline: var(--ant-line-width-focus) solid var(--ant-color-primary-border);
      outline-offset: 1px;
      transition: outline-offset 0s, outline 0s;
    }

    .css-1939drg.ant-modal .ant-modal-header {
      color: var(--ant-color-text);
      background: var(--ant-modal-header-bg);
      border-radius: var(--ant-border-radius-lg) var(--ant-border-radius-lg) 0 0;
      margin-bottom: var(--ant-modal-header-margin-bottom);
      padding: var(--ant-modal-header-padding);
      border-bottom: var(--ant-modal-header-border-bottom);
    }

    .css-1939drg.ant-modal .ant-modal-body {
      font-size: var(--ant-font-size);
      line-height: var(--ant-line-height);
      word-wrap: break-word;
      padding: var(--ant-modal-body-padding);
    }

    .css-1939drg.ant-modal .ant-modal-body .ant-modal-body-skeleton {
      width: 100%;
      height: 100%;
      display: flex;
      justify-content: center;
      align-items: center;
      margin: var(--ant-margin) auto;
    }

    .css-1939drg.ant-modal .ant-modal-footer {
      text-align: end;
      background: var(--ant-modal-footer-bg);
      margin-top: var(--ant-modal-footer-margin-top);
      padding: var(--ant-modal-footer-padding);
      border-top: var(--ant-modal-footer-border-top);
      border-radius: var(--ant-modal-footer-border-radius);
    }

    .css-1939drg.ant-modal .ant-modal-footer>.ant-btn+.ant-btn {
      margin-inline-start: var(--ant-margin-xs);
    }

    .css-1939drg.ant-modal .ant-modal-open {
      overflow: hidden;
    }

    .css-1939drg.ant-modal-pure-panel {
      top: auto;
      padding: 0;
      display: flex;
      flex-direction: column;
    }

    .css-1939drg.ant-modal-pure-panel .ant-modal-content,
    .css-1939drg.ant-modal-pure-panel .ant-modal-body,
    .css-1939drg.ant-modal-pure-panel .ant-modal-confirm-body-wrapper {
      display: flex;
      flex-direction: column;
      flex: auto;
    }

    .css-1939drg.ant-modal-pure-panel .ant-modal-confirm-body {
      margin-bottom: auto;
    }

    .css-1939drg.ant-modal-root .ant-modal-wrap-rtl {
      direction: rtl;
    }

    .css-1939drg.ant-modal-root .ant-modal-wrap-rtl .ant-modal-confirm-body {
      direction: rtl;
    }

    .css-1939drg.ant-modal-root .ant-modal.ant-zoom-enter,
    .css-1939drg.ant-modal-root .ant-modal.ant-zoom-appear {
      transform: none;
      opacity: 0;
      animation-duration: var(--ant-motion-duration-slow);
      user-select: none;
    }

    .css-1939drg.ant-modal-root .ant-modal.ant-zoom-leave .ant-modal-content {
      pointer-events: none;
    }

    .css-1939drg.ant-modal-root .ant-modal-mask {
      position: fixed;
      inset: 0;
      z-index: var(--ant-z-index-popup-base);
      height: 100%;
      background-color: var(--ant-color-bg-mask);
      pointer-events: none;
    }

    .css-1939drg.ant-modal-root .ant-modal-mask .ant-modal-hidden {
      display: none;
    }

    .css-1939drg.ant-modal-root .ant-modal-wrap {
      position: fixed;
      inset: 0;
      z-index: var(--ant-z-index-popup-base);
      overflow: auto;
      outline: 0;
      -webkit-overflow-scrolling: touch;
    }

    .css-1939drg.ant-modal-root .ant-fade-enter,
    .css-1939drg.ant-modal-root .ant-fade-appear {
      animation-duration: var(--ant-motion-duration-mid);
      animation-fill-mode: both;
      animation-play-state: paused;
    }

    .css-1939drg.ant-modal-root .ant-fade-leave {
      animation-duration: var(--ant-motion-duration-mid);
      animation-fill-mode: both;
      animation-play-state: paused;
    }

    .css-1939drg.ant-modal-root .ant-fade-enter.ant-fade-enter-active,
    .css-1939drg.ant-modal-root .ant-fade-appear.ant-fade-appear-active {
      animation-name: css-1939drg-antFadeIn;
      animation-play-state: running;
    }

    .css-1939drg.ant-modal-root .ant-fade-leave.ant-fade-leave-active {
      animation-name: css-1939drg-antFadeOut;
      animation-play-state: running;
      pointer-events: none;
    }

    .css-1939drg.ant-modal-root .ant-fade-enter,
    .css-1939drg.ant-modal-root .ant-fade-appear {
      opacity: 0;
      animation-timing-function: linear;
    }

    .css-1939drg.ant-modal-root .ant-fade-leave {
      animation-timing-function: linear;
    }

    .css-1939drg.ant-zoom-enter,
    .css-1939drg.ant-zoom-appear {
      animation-duration: var(--ant-motion-duration-mid);
      animation-fill-mode: both;
      animation-play-state: paused;
    }

    .css-1939drg.ant-zoom-leave {
      animation-duration: var(--ant-motion-duration-mid);
      animation-fill-mode: both;
      animation-play-state: paused;
    }

    .css-1939drg.ant-zoom-enter.ant-zoom-enter-active,
    .css-1939drg.ant-zoom-appear.ant-zoom-appear-active {
      animation-name: css-1939drg-antZoomIn;
      animation-play-state: running;
    }

    .css-1939drg.ant-zoom-leave.ant-zoom-leave-active {
      animation-name: css-1939drg-antZoomOut;
      animation-play-state: running;
      pointer-events: none;
    }

    .css-1939drg.ant-zoom-enter,
    .css-1939drg.ant-zoom-appear {
      transform: scale(0);
      opacity: 0;
      animation-timing-function: var(--ant-motion-ease-out-circ);
    }

    .css-1939drg.ant-zoom-enter-prepare,
    .css-1939drg.ant-zoom-appear-prepare {
      transform: none;
    }

    .css-1939drg.ant-zoom-leave {
      animation-timing-function: var(--ant-motion-ease-in-out-circ);
    }
  </style>
  <style data-rc-order="prependQueue" data-rc-priority="-999" data-css-hash="_effect-css-1939drg-antFadeIn">
    @keyframes css-1939drg-antFadeIn {
      0% {
        opacity: 0;
      }

      100% {
        opacity: 1;
      }
    }
  </style>
  <style data-rc-order="prependQueue" data-rc-priority="-999" data-css-hash="_effect-css-1939drg-antFadeOut">
    @keyframes css-1939drg-antFadeOut {
      0% {
        opacity: 1;
      }

      100% {
        opacity: 0;
      }
    }
  </style>
  <style data-rc-order="prependQueue" data-rc-priority="-999" data-css-hash="_effect-css-1939drg-antZoomIn">
    @keyframes css-1939drg-antZoomIn {
      0% {
        transform: scale(0.2);
        opacity: 0;
      }

      100% {
        transform: scale(1);
        opacity: 1;
      }
    }
  </style>
  <style data-rc-order="prependQueue" data-rc-priority="-999" data-css-hash="_effect-css-1939drg-antZoomOut">
    @keyframes css-1939drg-antZoomOut {
      0% {
        transform: scale(1);
      }

      100% {
        transform: scale(0.2);
        opacity: 0;
      }
    }
  </style>
  <style data-rc-order="prependQueue" data-css-hash="1p4bkf0" data-token-hash="1f3s619">
    .anticon {
      display: inline-flex;
      align-items: center;
      color: inherit;
      font-style: normal;
      line-height: 0;
      text-align: center;
      text-transform: none;
      vertical-align: -0.125em;
      text-rendering: optimizeLegibility;
      -webkit-font-smoothing: antialiased;
      -moz-osx-font-smoothing: grayscale;
    }

    .anticon>* {
      line-height: 1;
    }

    .anticon svg {
      display: inline-block;
    }

    .anticon .anticon .anticon-icon {
      display: block;
    }
  </style>
  <style data-rc-order="prependQueue" data-css-hash="fihtjb" data-token-hash="8x2idg">
    .anticon {
      display: inline-flex;
      align-items: center;
      color: inherit;
      font-style: normal;
      line-height: 0;
      text-align: center;
      text-transform: none;
      vertical-align: -0.125em;
      text-rendering: optimizeLegibility;
      -webkit-font-smoothing: antialiased;
      -moz-osx-font-smoothing: grayscale;
    }

    .anticon>* {
      line-height: 1;
    }

    .anticon svg {
      display: inline-block;
    }

    .anticon .anticon .anticon-icon {
      display: block;
    }
  </style>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>图片混淆</title>
  <link rel="icon" href="https://cdn.axe.ink/favicon.ico" type="image/x-icon">
  <link rel="stylesheet" href="https://www.axe.ink/css/bootstrap.css">
  <style>
    input,
    button,
    select {
      margin: 0.5rem 0;
    }

    #imgwrap img {
      max-width: 100%;
      height: auto;
    }

    #mzsm {
      font-weight: bold;
      color: #dc3545;
      padding: 1rem 0;
    }
  </style>
  <style class="mpa-style-fix ImageGatherer">
    .FotorFrame {
      position: fixed !important
    }
  </style>
  <style class="mpa-style-fix SideFunctionPanel">
    .weui-desktop-online-faq__wrp {
      top: 304px !important;
      bottom: unset !important
    }

    .weui-desktop-online-faq__wrp .weui-desktop-online-faq__switch {
      width: 38px !important
    }
  </style>
</head>

<body mpa-version="11.1.4" mpa-extension-id="ibefaeehajgcpooopoegkifhgecigeeg">
  <div class="container text-center">
    <h1 class="my-4">图片混淆</h1>
    <input class="form-control" style="display:none" onchange="ipt()" type="file" id="ipt" accept="image/*">
    <button class="btn btn-primary" onclick="xuanze()">选择图片</button>
    <button class="btn btn-secondary" onclick="baocun()">保存图片</button>
    <br><br>
    <div class="form-group">
      <label for="slct">模式：</label>
      <select class="form-control" id="slct" onchange="selectonchange()">
        <option value="b">方块混淆</option>
        <option value="c2">行像素混淆</option>
        <option value="c">像素混淆</option>
        <option value="pe1">兼容PicEncrypt: 行模式</option>
        <option value="pe2">兼容PicEncrypt: 行+列模式</option>
      </select>
    </div>
    <div class="form-group">
      <label for="ikey">密钥：</label>
      <input class="form-control" type="text" id="ikey" placeholder="可为任意字符串">
      <input class="form-control" style="display:none" type="number" id="ikey2" value="0.666" placeholder="大于0小于1的任意小数">
    </div>
    <button class="btn btn-success" onclick="jiami()">混淆</button>
    <button class="btn btn-warning" onclick="jiemi()">解混淆</button>
    <button class="btn btn-danger" onclick="huanyuan()">还原</button>
    <div id="imgwrap" class="my-4">
      <div id="picinfo" class="text-muted"></div>
      <img id="kimg"
        src="">
    </div>
    <div id="loading" class="text-muted" style="display:none">
      正在生成中...
    </div>
    <div id="mzsm">
      <div style="font-size:1.5rem">注意！</div>
      仅Chrome可以使用<br>
      请勿用于非法用途<br>
    </div>
  </div>
  <script src="https://www.axe.ink/js/jquery-3.5.1.slim.min.js"></script>
  <script src="https://www.axe.ink/js/popper.min.js"></script>
  <script src="https://www.axe.ink/js/bootstrap.min.js"></script>
  <remove-web-limits-iqxin id="rwl-iqxin" class="rwl-exempt" style="position: fixed; top: 0px; left: 0px;">
    <qxinbutton type="qxinbutton" id="rwl-setbtn"> set </qxinbutton>
    <lalala style="cursor:move; font-size:12px;">限制解除</lalala> <input type="checkbox" name="" id="black_node">
    <style type="text/css">
      #rwl-iqxin {
        position: fixed;
        transform: translate(-95px, 0);
        width: 85px;
        height: 25px;
        font-size: 12px;
        font-weight: 500;
        font-family: Verdana, Arial, '宋体';
        color: #fff;
        background: #333;
        z-index: 2147483647;
        margin: 0;
        opacity: 0.05;
        transition: 0.3s;
        overflow: hidden;
        user-select: none;
        text-align: center;
        white-space: nowrap;
        line-height: 25px;
        padding: 0 16px;
        border: 1px solid #ccc;
        border-width: 1px 1px 1px 0;
        border-bottom-right-radius: 5px;
        box-sizing: content-box;
      }

      #rwl-iqxin input {
        margin: 0;
        padding: 0;
        vertical-align: middle;
        -webkit-appearance: checkbox;
        -moz-appearance: checkbox;
        position: static;
        clip: auto;
        opacity: 1;
        cursor: pointer;
      }

      #rwl-iqxin.rwl-active-iqxin {
        left: 0px;
        transform: translate(0, 0);
        opacity: 0.9;
        height: 32px;
        line-height: 32px
      }

      #rwl-iqxin label {
        margin: 0;
        padding: 0;
        font-weight: 500;
      }

      #rwl-iqxin #rwl-setbtn {
        margin: 0 4px 0 0;
        padding: 0 0 0 4px;
        border: none;
        border-radius: 2px;
        cursor: pointer;
        background: #fff;
        color: #000;
      }
    </style>
  </remove-web-limits-iqxin>
  <script>
    var md5 = (function () {
      function MD5(string) {
        var x = Array();
        var k, AA, BB, CC, DD, a, b, c, d;
        var S11 = 7,
          S12 = 12,
          S13 = 17,
          S14 = 22;
        var S21 = 5,
          S22 = 9,
          S23 = 14,
          S24 = 20;
        var S31 = 4,
          S32 = 11,
          S33 = 16,
          S34 = 23;
        var S41 = 6,
          S42 = 10,
          S43 = 15,
          S44 = 21;
        string = Utf8Encode(string);
        x = ConvertToWordArray(string);
        a = 0x67452301;
        b = 0xEFCDAB89;
        c = 0x98BADCFE;
        d = 0x10325476;
        for (k = 0; k < x.length; k += 16) {
          AA = a;
          BB = b;
          CC = c;
          DD = d;
          a = FF(a, b, c, d, x[k + 0], S11, 0xD76AA478);
          d = FF(d, a, b, c, x[k + 1], S12, 0xE8C7B756);
          c = FF(c, d, a, b, x[k + 2], S13, 0x242070DB);
          b = FF(b, c, d, a, x[k + 3], S14, 0xC1BDCEEE);
          a = FF(a, b, c, d, x[k + 4], S11, 0xF57C0FAF);
          d = FF(d, a, b, c, x[k + 5], S12, 0x4787C62A);
          c = FF(c, d, a, b, x[k + 6], S13, 0xA8304613);
          b = FF(b, c, d, a, x[k + 7], S14, 0xFD469501);
          a = FF(a, b, c, d, x[k + 8], S11, 0x698098D8);
          d = FF(d, a, b, c, x[k + 9], S12, 0x8B44F7AF);
          c = FF(c, d, a, b, x[k + 10], S13, 0xFFFF5BB1);
          b = FF(b, c, d, a, x[k + 11], S14, 0x895CD7BE);
          a = FF(a, b, c, d, x[k + 12], S11, 0x6B901122);
          d = FF(d, a, b, c, x[k + 13], S12, 0xFD987193);
          c = FF(c, d, a, b, x[k + 14], S13, 0xA679438E);
          b = FF(b, c, d, a, x[k + 15], S14, 0x49B40821);
          a = GG(a, b, c, d, x[k + 1], S21, 0xF61E2562);
          d = GG(d, a, b, c, x[k + 6], S22, 0xC040B340);
          c = GG(c, d, a, b, x[k + 11], S23, 0x265E5A51);
          b = GG(b, c, d, a, x[k + 0], S24, 0xE9B6C7AA);
          a = GG(a, b, c, d, x[k + 5], S21, 0xD62F105D);
          d = GG(d, a, b, c, x[k + 10], S22, 0x2441453);
          c = GG(c, d, a, b, x[k + 15], S23, 0xD8A1E681);
          b = GG(b, c, d, a, x[k + 4], S24, 0xE7D3FBC8);
          a = GG(a, b, c, d, x[k + 9], S21, 0x21E1CDE6);
          d = GG(d, a, b, c, x[k + 14], S22, 0xC33707D6);
          c = GG(c, d, a, b, x[k + 3], S23, 0xF4D50D87);
          b = GG(b, c, d, a, x[k + 8], S24, 0x455A14ED);
          a = GG(a, b, c, d, x[k + 13], S21, 0xA9E3E905);
          d = GG(d, a, b, c, x[k + 2], S22, 0xFCEFA3F8);
          c = GG(c, d, a, b, x[k + 7], S23, 0x676F02D9);
          b = GG(b, c, d, a, x[k + 12], S24, 0x8D2A4C8A);
          a = HH(a, b, c, d, x[k + 5], S31, 0xFFFA3942);
          d = HH(d, a, b, c, x[k + 8], S32, 0x8771F681);
          c = HH(c, d, a, b, x[k + 11], S33, 0x6D9D6122);
          b = HH(b, c, d, a, x[k + 14], S34, 0xFDE5380C);
          a = HH(a, b, c, d, x[k + 1], S31, 0xA4BEEA44);
          d = HH(d, a, b, c, x[k + 4], S32, 0x4BDECFA9);
          c = HH(c, d, a, b, x[k + 7], S33, 0xF6BB4B60);
          b = HH(b, c, d, a, x[k + 10], S34, 0xBEBFBC70);
          a = HH(a, b, c, d, x[k + 13], S31, 0x289B7EC6);
          d = HH(d, a, b, c, x[k + 0], S32, 0xEAA127FA);
          c = HH(c, d, a, b, x[k + 3], S33, 0xD4EF3085);
          b = HH(b, c, d, a, x[k + 6], S34, 0x4881D05);
          a = HH(a, b, c, d, x[k + 9], S31, 0xD9D4D039);
          d = HH(d, a, b, c, x[k + 12], S32, 0xE6DB99E5);
          c = HH(c, d, a, b, x[k + 15], S33, 0x1FA27CF8);
          b = HH(b, c, d, a, x[k + 2], S34, 0xC4AC5665);
          a = II(a, b, c, d, x[k + 0], S41, 0xF4292244);
          d = II(d, a, b, c, x[k + 7], S42, 0x432AFF97);
          c = II(c, d, a, b, x[k + 14], S43, 0xAB9423A7);
          b = II(b, c, d, a, x[k + 5], S44, 0xFC93A039);
          a = II(a, b, c, d, x[k + 12], S41, 0x655B59C3);
          d = II(d, a, b, c, x[k + 3], S42, 0x8F0CCC92);
          c = II(c, d, a, b, x[k + 10], S43, 0xFFEFF47D);
          b = II(b, c, d, a, x[k + 1], S44, 0x85845DD1);
          a = II(a, b, c, d, x[k + 8], S41, 0x6FA87E4F);
          d = II(d, a, b, c, x[k + 15], S42, 0xFE2CE6E0);
          c = II(c, d, a, b, x[k + 6], S43, 0xA3014314);
          b = II(b, c, d, a, x[k + 13], S44, 0x4E0811A1);
          a = II(a, b, c, d, x[k + 4], S41, 0xF7537E82);
          d = II(d, a, b, c, x[k + 11], S42, 0xBD3AF235);
          c = II(c, d, a, b, x[k + 2], S43, 0x2AD7D2BB);
          b = II(b, c, d, a, x[k + 9], S44, 0xEB86D391);
          a = AddUnsigned(a, AA);
          b = AddUnsigned(b, BB);
          c = AddUnsigned(c, CC);
          d = AddUnsigned(d, DD);
        }
        var temp = WordToHex(a) + WordToHex(b) + WordToHex(c) + WordToHex(d);
        return temp.toUpperCase();
      }

      function RotateLeft(lValue, iShiftBits) {
        return (lValue << iShiftBits) | (lValue >>> (32 - iShiftBits));
      }

      function AddUnsigned(lX, lY) {
        var lX4, lY4, lX8, lY8, lResult;
        lX8 = (lX & 0x80000000);
        lY8 = (lY & 0x80000000);
        lX4 = (lX & 0x40000000);
        lY4 = (lY & 0x40000000);
        lResult = (lX & 0x3FFFFFFF) + (lY & 0x3FFFFFFF);
        if (lX4 & lY4) {
          return (lResult ^ 0x80000000 ^ lX8 ^ lY8);
        }
        if (lX4 | lY4) {
          if (lResult & 0x40000000) {
            return (lResult ^ 0xC0000000 ^ lX8 ^ lY8);
          } else {
            return (lResult ^ 0x40000000 ^ lX8 ^ lY8);
          }
        } else {
          return (lResult ^ lX8 ^ lY8);
        }
      }

      function F(x, y, z) {
        return (x & y) | ((~x) & z);
      }

      function G(x, y, z) {
        return (x & z) | (y & (~z));
      }

      function H(x, y, z) {
        return (x ^ y ^ z);
      }

      function I(x, y, z) {
        return (y ^ (x | (~z)));
      }

      function FF(a, b, c, d, x, s, ac) {
        a = AddUnsigned(a, AddUnsigned(AddUnsigned(F(b, c, d), x), ac));
        return AddUnsigned(RotateLeft(a, s), b);
      }

      function GG(a, b, c, d, x, s, ac) {
        a = AddUnsigned(a, AddUnsigned(AddUnsigned(G(b, c, d), x), ac));
        return AddUnsigned(RotateLeft(a, s), b);
      }

      function HH(a, b, c, d, x, s, ac) {
        a = AddUnsigned(a, AddUnsigned(AddUnsigned(H(b, c, d), x), ac));
        return AddUnsigned(RotateLeft(a, s), b);
      }

      function II(a, b, c, d, x, s, ac) {
        a = AddUnsigned(a, AddUnsigned(AddUnsigned(I(b, c, d), x), ac));
        return AddUnsigned(RotateLeft(a, s), b);
      }

      function ConvertToWordArray(string) {
        var lWordCount;
        var lMessageLength = string.length;
        var lNumberOfWords_temp1 = lMessageLength + 8;
        var lNumberOfWords_temp2 = (lNumberOfWords_temp1 - (lNumberOfWords_temp1 % 64)) / 64;
        var lNumberOfWords = (lNumberOfWords_temp2 + 1) * 16;
        var lWordArray = Array(lNumberOfWords - 1);
        var lBytePosition = 0;
        var lByteCount = 0;
        while (lByteCount < lMessageLength) {
          lWordCount = (lByteCount - (lByteCount % 4)) / 4;
          lBytePosition = (lByteCount % 4) * 8;
          lWordArray[lWordCount] = (lWordArray[lWordCount] | (string.charCodeAt(lByteCount) << lBytePosition));
          lByteCount++;
        }
        lWordCount = (lByteCount - (lByteCount % 4)) / 4;
        lBytePosition = (lByteCount % 4) * 8;
        lWordArray[lWordCount] = lWordArray[lWordCount] | (0x80 << lBytePosition);
        lWordArray[lNumberOfWords - 2] = lMessageLength << 3;
        lWordArray[lNumberOfWords - 1] = lMessageLength >>> 29;
        return lWordArray;
      }

      function WordToHex(lValue) {
        var WordToHexValue = "",
          WordToHexValue_temp = "",
          lByte, lCount;
        for (lCount = 0; lCount <= 3; lCount++) {
          lByte = (lValue >>> (lCount * 8)) & 255;
          WordToHexValue_temp = "0" + lByte.toString(16);
          WordToHexValue = WordToHexValue + WordToHexValue_temp.substr(WordToHexValue_temp.length - 2, 2);
        }
        return WordToHexValue;
      }

      function Utf8Encode(string) {
        var utftext = "";
        for (var n = 0; n < string.length; n++) {
          var c = string.charCodeAt(n);
          if (c < 128) {
            utftext += String.fromCharCode(c);
          } else if ((c > 127) && (c < 2048)) {
            utftext += String.fromCharCode((c >> 6) | 192);
            utftext += String.fromCharCode((c & 63) | 128);
          } else {
            utftext += String.fromCharCode((c >> 12) | 224);
            utftext += String.fromCharCode(((c >> 6) & 63) | 128);
            utftext += String.fromCharCode((c & 63) | 128);
          }
        }
        return utftext;
      }
      return MD5
    }())
  </script>
  <script>
    let IMG = new Image();
    let SIZE = 4294967296;
    let MZSMshow = true;
    let SRC = "";
    let OPICSRC = "";
    let INFO1 = "请先上传图片！";
    let INFO2 = "本页面仅供技术研究使用，请勿用于非法用途，否则后果作者概不负责";
    let INFO3 = "ybzjdsd.gitee.io/tphx\nybzjdsd.github.io/tphx";
    /*
    function bcwy(){
    let fr=new FileReader();
    fr.readAsDataURL(new Blob(["<!DOCTYPE html>"+document.documentElement.outerHTML],{type:"text/html"}))
    fr.onloadend = function(e){
    let a=document.createElement("a");
    a.href=e.target.result;
    a.download="图片混淆.html";
    a.click()
    }
    }
    */

    function selectonchange() {
      if (["pe1", "pe2"].indexOf(document.getElementById("slct").value) == -1) {
        document.getElementById("ikey2").style.display = "none";
        document.getElementById("ikey").style.display = "inline";
      } else {
        document.getElementById("ikey").style.display = "none";
        document.getElementById("ikey2").style.display = "inline";
      }

    }

    function xuanze() {
      if (MZSMshow) {
        document.getElementById("mzsm").style.display = "none";
        MZSMshow = false
      }
      document.getElementById("ipt").click();
    }

    function huanyuan() {

      if (SRC == "") {
        alert(INFO1)
      } else {

        setpic(OPICSRC);
        document.getElementById("picinfo").innerHTML = "&emsp;"

      }

    }

    function baocun() {

      if (SRC == "") {
        alert(INFO1)
      } else {

        let alink = document.createElement("a");
        alink.download = "pic_" + (parseInt(Date.now() / 1000) % Math.pow(36, 6) + Math.pow(36, 6)).toString(36).slice(
          1) + ".png";
        alink.href = SRC;
        alink.click();

      }

    }

    function setpic(dturl) {
      if (SRC) {
        URL.revokeObjectURL(SRC)
      }
      SRC = URL.createObjectURL(dataURLtoBlob(dturl));
      IMG.src = SRC
      document.getElementById("kimg").src = SRC;
    }


    function dataURLtoBlob(dataurl) {
      var arr = dataurl.split(',');
      //注意base64的最后面中括号和引号是不转译的   
      var _arr = arr[1].substring(0, arr[1].length - 2);
      var mime = arr[0].match(/:(.*?);/)[1],
        bstr = atob(_arr),
        n = bstr.length,
        u8arr = new Uint8Array(n);
      while (n--) {
        u8arr[n] = bstr.charCodeAt(n);
      }
      return new Blob([u8arr], {
        type: mime
      });
    }

    function ipt() {
      var oFReader = new FileReader();
      var ofile = document.getElementById("ipt").files[0];
      oFReader.readAsDataURL(ofile);
      oFReader.onloadend = function (oFRevent) {
        var osrc = oFRevent.target.result;
        OPICSRC = osrc;
        setpic(osrc);
        document.getElementById("picinfo").innerHTML = "&emsp;"
      }
    }

    function jiami() {

      if (SRC == "") {
        alert(INFO1)
      } else {

        let t = Date.now();
        let s = "";
        let a = document.getElementById("slct").value;
        let k = document.getElementById("ikey").value;
        let k2 = parseFloat(document.getElementById("ikey2").value);

        document.getElementById("imgwrap").style.display = "none";
        document.getElementById("loading").style.display = "block";

        requestAnimationFrame(function () {
          requestAnimationFrame(function () {

            if (a == "b") {
              s = encryptB2(IMG, k, 32, 32);
            } else if (a == "c") {
              s = encryptC(IMG, k);
            } else if (a == "pe1") {
              s = encryptPE1(IMG, k2);
            } else if (a == "pe2") {
              s = encryptPE2(IMG, k2);
            } else {
              s = encryptC2(IMG, k);
            }
            setpic(s[0]);
            document.getElementById("picinfo").innerHTML = "size:&ensp;" + s[1] + "×" + s[2] +
              "&emsp;time:&ensp;" + (Date.now() - t).toString() + "ms"
            document.getElementById("imgwrap").style.display = "block";
            document.getElementById("loading").style.display = "none";
          })
        })

      }

    }

    function jiemi() {

      if (SRC == "") {
        alert(INFO1)
      } else {

        let t = Date.now();
        let s = "";
        let a = document.getElementById("slct").value;
        let k = document.getElementById("ikey").value;
        let k2 = parseFloat(document.getElementById("ikey2").value);

        document.getElementById("imgwrap").style.display = "none";
        document.getElementById("loading").style.display = "block";

        requestAnimationFrame(function () {
          requestAnimationFrame(function () {

            if (a == "b") {
              s = decryptB2(IMG, k, 32, 32);
            } else if (a == "c") {
              s = decryptC(IMG, k);
            } else if (a == "pe1") {
              s = decryptPE1(IMG, k2);
            } else if (a == "pe2") {
              s = decryptPE2(IMG, k2);
            } else {
              s = decryptC2(IMG, k);
            }


            setpic(s[0]);
            document.getElementById("kimg").src = SRC;
            document.getElementById("picinfo").innerHTML = "size:&ensp;" + s[1] + "×" + s[2] +
              "&emsp;time:&ensp;" + (Date.now() - t).toString() + "ms"
            document.getElementById("imgwrap").style.display = "block";
            document.getElementById("loading").style.display = "none";
          })
        })

      }

    }




    //随机打乱
    function amess(arrlength, ast) {
      var rand, temp;
      var arr = new Array(arrlength).fill(0).map((a, b) => b);
      for (let i = arrlength - 1; i > 0; i -= 1) {
        rand = parseInt(md5(ast + i.toString()).substr(0, 7), 16) % (i + 1);
        temp = arr[rand];
        arr[rand] = arr[i]
        arr[i] = temp;
      }
      return arr;
    }


    //块混淆

    function encryptB2(img1, key, sx, sy) {
      var cv = document.createElement("canvas");
      var cvd = cv.getContext("2d");
      var wid = img1.width;
      var hit = img1.height;
      var wid1 = wid;
      var hit1 = hit;
      var imgdata;
      var oimgdata;
      var xl = new Array();
      var yl = new Array();
      var k = 8;
      var m = 0;
      var n = 0;
      var ssx;
      var ssy;
      //缩放大小
      if (wid * hit > SIZE) {
        wid = parseInt(Math.pow(SIZE * img1.width / img1.height, 1 / 2));
        hit = parseInt(Math.pow(SIZE * img1.height / img1.width, 1 / 2));
      }

      wid1 = wid;
      hit1 = hit;

      while (wid % sx > 0) {
        wid++
      }
      while (hit % sy > 0) {
        hit++
      }

      ssx = wid / sx;
      ssy = hit / sy;

      cv.width = wid;
      cv.height = hit;

      cvd.drawImage(img1, 0, 0, wid1, hit1);
      cvd.drawImage(img1, 0, hit1, wid1, hit1);
      cvd.drawImage(img1, wid1, 0, wid1, hit1);
      cvd.drawImage(img1, wid1, hit1, wid1, hit1);

      imgdata = cvd.getImageData(0, 0, wid, hit);
      oimgdata = cvd.createImageData(wid, hit);

      xl = amess(sx, key);
      yl = amess(sy, key);

      for (let i = 0; i < wid; i++) {
        for (let j = 0; j < hit; j++) {
          m = i;
          n = j;
          m = (xl[((n / ssy) | 0) % sx] * ssx + m) % wid;
          m = xl[(m / ssx) | 0] * ssx + m % ssx;
          n = (yl[((m / ssx) | 0) % sy] * ssy + n) % hit;
          n = yl[(n / ssy) | 0] * ssy + n % ssy;

          oimgdata.data[4 * (i + j * wid)] = imgdata.data[4 * (m + n * wid)];
          oimgdata.data[4 * (i + j * wid) + 1] = imgdata.data[4 * (m + n * wid) + 1];
          oimgdata.data[4 * (i + j * wid) + 2] = imgdata.data[4 * (m + n * wid) + 2];
          oimgdata.data[4 * (i + j * wid) + 3] = imgdata.data[4 * (m + n * wid) + 3];
        }
      }
      cvd.putImageData(oimgdata, 0, 0);
      return [cv.toDataURL(), wid, hit]
    }

    function decryptB2(img1, key, sx, sy) {
      var cv = document.createElement("canvas");
      var cvd = cv.getContext("2d");
      var wid = img1.width;
      var hit = img1.height;
      var wid1 = wid;
      var hit1 = hit;
      var imgdata;
      var oimgdata;
      var xl = new Array();
      var yl = new Array();
      var k = 8;
      var m = 0;
      var n = 0;
      var ssx;
      var ssy;

      wid1 = wid;
      hit1 = hit;

      while (wid % sx > 0) {
        wid++
      }
      while (hit % sy > 0) {
        hit++
      }

      ssx = wid / sx;
      ssy = hit / sy;

      cv.width = wid;
      cv.height = hit;

      cvd.drawImage(img1, 0, 0, wid1, hit1);
      cvd.drawImage(img1, 0, hit1, wid1, hit1);
      cvd.drawImage(img1, wid1, 0, wid1, hit1);
      cvd.drawImage(img1, wid1, hit1, wid1, hit1);


      imgdata = cvd.getImageData(0, 0, wid, hit);
      oimgdata = cvd.createImageData(wid, hit);

      xl = amess(sx, key);
      yl = amess(sy, key);

      for (let i = 0; i < wid; i++) {
        for (let j = 0; j < hit; j++) {
          m = i;
          n = j;
          m = (xl[((n / ssy) | 0) % sx] * ssx + m) % wid;
          m = xl[(m / ssx) | 0] * ssx + m % ssx;
          n = (yl[((m / ssx) | 0) % sy] * ssy + n) % hit;
          n = yl[(n / ssy) | 0] * ssy + n % ssy;

          oimgdata.data[4 * (m + n * wid)] = imgdata.data[4 * (i + j * wid)];
          oimgdata.data[4 * (m + n * wid) + 1] = imgdata.data[4 * (i + j * wid) + 1];
          oimgdata.data[4 * (m + n * wid) + 2] = imgdata.data[4 * (i + j * wid) + 2];
          oimgdata.data[4 * (m + n * wid) + 3] = imgdata.data[4 * (i + j * wid) + 3];
        }
      }
      cvd.putImageData(oimgdata, 0, 0);
      return [cv.toDataURL(), wid, hit]
    }






    //算法C,逐像素混淆
    function encryptC(img1, key) {
      var cv = document.createElement("canvas");
      var cvd = cv.getContext("2d");
      var wid = img1.width;
      var hit = img1.height;
      var imgdata;
      var oimgdata;
      var xl = new Array();
      var yl = new Array();
      var m = 0;
      var n = 0;

      //缩放大小
      if (wid * hit > SIZE) {
        wid = parseInt(Math.pow(SIZE * img1.width / img1.height, 1 / 2));
        hit = parseInt(Math.pow(SIZE * img1.height / img1.width, 1 / 2));
      }

      cv.width = wid;
      cv.height = hit;
      cvd.drawImage(img1, 0, 0, wid, hit);
      imgdata = cvd.getImageData(0, 0, wid, hit);
      oimgdata = cvd.createImageData(wid, hit);

      xl = amess(wid, key);
      yl = amess(hit, key);

      for (let i = 0; i < wid; i++) {
        for (let j = 0; j < hit; j++) {
          m = i;
          n = j;
          m = (xl[n % wid] + m) % wid;
          m = xl[m];
          n = (yl[m % hit] + n) % hit;
          n = yl[n];

          oimgdata.data[4 * (i + j * wid)] = imgdata.data[4 * (m + n * wid)];
          oimgdata.data[4 * (i + j * wid) + 1] = imgdata.data[4 * (m + n * wid) + 1];
          oimgdata.data[4 * (i + j * wid) + 2] = imgdata.data[4 * (m + n * wid) + 2];
          oimgdata.data[4 * (i + j * wid) + 3] = imgdata.data[4 * (m + n * wid) + 3];
        }
      }
      cvd.putImageData(oimgdata, 0, 0);
      return [cv.toDataURL(), wid, hit]
    }

    function decryptC(img1, key) {
      var cv = document.createElement("canvas");
      var cvd = cv.getContext("2d");
      var wid = img1.width;
      var hit = img1.height;
      var imgdata;
      var oimgdata;
      var xl = new Array();
      var yl = new Array();
      var m = 0;
      var n = 0;

      cv.width = wid;
      cv.height = hit;
      cvd.drawImage(img1, 0, 0, wid, hit);
      imgdata = cvd.getImageData(0, 0, wid, hit);
      oimgdata = cvd.createImageData(wid, hit);

      xl = amess(wid, key);
      yl = amess(hit, key);

      for (let i = 0; i < wid; i++) {
        for (let j = 0; j < hit; j++) {
          m = i;
          n = j;
          m = (xl[n % wid] + m) % wid;
          m = xl[m];
          n = (yl[m % hit] + n) % hit;
          n = yl[n];

          oimgdata.data[4 * (m + n * wid)] = imgdata.data[4 * (i + j * wid)];
          oimgdata.data[4 * (m + n * wid) + 1] = imgdata.data[4 * (i + j * wid) + 1];
          oimgdata.data[4 * (m + n * wid) + 2] = imgdata.data[4 * (i + j * wid) + 2];
          oimgdata.data[4 * (m + n * wid) + 3] = imgdata.data[4 * (i + j * wid) + 3];
        }
      }
      cvd.putImageData(oimgdata, 0, 0);
      return [cv.toDataURL(), wid, hit]
    }



    //行像素混淆
    function encryptC2(img1, key) {
      var cv = document.createElement("canvas");
      var cvd = cv.getContext("2d");
      var wid = img1.width;
      var hit = img1.height;
      var imgdata;
      var oimgdata;
      var xl = new Array();
      var yl = new Array();
      var m = 0;
      var n = 0;

      //缩放大小
      if (wid * hit > SIZE) {
        wid = parseInt(Math.pow(SIZE * img1.width / img1.height, 1 / 2));
        hit = parseInt(Math.pow(SIZE * img1.height / img1.width, 1 / 2));
      }

      cv.width = wid;
      cv.height = hit;
      cvd.drawImage(img1, 0, 0, wid, hit);
      imgdata = cvd.getImageData(0, 0, wid, hit);
      oimgdata = cvd.createImageData(wid, hit);

      xl = amess(wid, key);
      yl = amess(hit, key);

      for (let i = 0; i < wid; i++) {
        for (let j = 0; j < hit; j++) {
          m = i;
          n = j;
          m = (xl[n % wid] + m) % wid;
          m = xl[m];


          oimgdata.data[4 * (i + j * wid)] = imgdata.data[4 * (m + n * wid)];
          oimgdata.data[4 * (i + j * wid) + 1] = imgdata.data[4 * (m + n * wid) + 1];
          oimgdata.data[4 * (i + j * wid) + 2] = imgdata.data[4 * (m + n * wid) + 2];
          oimgdata.data[4 * (i + j * wid) + 3] = imgdata.data[4 * (m + n * wid) + 3];
        }
      }
      cvd.putImageData(oimgdata, 0, 0);
      return [cv.toDataURL(), wid, hit]
    }

    function decryptC2(img1, key) {
      var cv = document.createElement("canvas");
      var cvd = cv.getContext("2d");
      var wid = img1.width;
      var hit = img1.height;
      var imgdata;
      var oimgdata;
      var xl = new Array();
      var yl = new Array();
      var m = 0;
      var n = 0;

      cv.width = wid;
      cv.height = hit;
      cvd.drawImage(img1, 0, 0, wid, hit);
      imgdata = cvd.getImageData(0, 0, wid, hit);
      oimgdata = cvd.createImageData(wid, hit);

      xl = amess(wid, key);
      yl = amess(hit, key);

      for (let i = 0; i < wid; i++) {
        for (let j = 0; j < hit; j++) {
          m = i;
          n = j;
          m = (xl[n % wid] + m) % wid;
          m = xl[m];


          oimgdata.data[4 * (m + n * wid)] = imgdata.data[4 * (i + j * wid)];
          oimgdata.data[4 * (m + n * wid) + 1] = imgdata.data[4 * (i + j * wid) + 1];
          oimgdata.data[4 * (m + n * wid) + 2] = imgdata.data[4 * (i + j * wid) + 2];
          oimgdata.data[4 * (m + n * wid) + 3] = imgdata.data[4 * (i + j * wid) + 3];
        }
      }
      cvd.putImageData(oimgdata, 0, 0);
      return [cv.toDataURL(), wid, hit]
    }




    //picencrypt算法

    function produceLogisticSort(a, b) {
      return a[0] - b[0]
    }

    function produceLogistic(x1, n) {
      let l = new Array(n);
      let x = x1;
      l[0] = [x, 0];
      for (let i = 1; i < n; i++) {
        x = 3.9999999 * x * (1 - x);
        l[i] = [x, i]
      }
      return l
    }

    //行混淆
    function encryptPE1(img1, key) {
      var cv = document.createElement("canvas");
      var cvd = cv.getContext("2d");
      var wid = img1.width;
      var hit = img1.height;
      var imgdata;
      var oimgdata;
      var arrayaddress = new Array();
      var m = 0;
      var n = 0;

      //缩放大小
      if (wid * hit > SIZE) {
        wid = parseInt(Math.pow(SIZE * img1.width / img1.height, 1 / 2));
        hit = parseInt(Math.pow(SIZE * img1.height / img1.width, 1 / 2));
      }

      cv.width = wid;
      cv.height = hit;
      cvd.drawImage(img1, 0, 0, wid, hit);
      imgdata = cvd.getImageData(0, 0, wid, hit);
      oimgdata = cvd.createImageData(wid, hit);

      arrayaddress = produceLogistic(key, wid).sort(produceLogisticSort).map(x => x[1]);

      for (let i = 0; i < wid; i++) {
        for (let j = 0; j < hit; j++) {
          m = arrayaddress[i];


          oimgdata.data[4 * (i + j * wid)] = imgdata.data[4 * (m + j * wid)];
          oimgdata.data[4 * (i + j * wid) + 1] = imgdata.data[4 * (m + j * wid) + 1];
          oimgdata.data[4 * (i + j * wid) + 2] = imgdata.data[4 * (m + j * wid) + 2];
          oimgdata.data[4 * (i + j * wid) + 3] = imgdata.data[4 * (m + j * wid) + 3];
        }
      }
      cvd.putImageData(oimgdata, 0, 0);
      return [cv.toDataURL(), wid, hit]
    }

    function decryptPE1(img1, key) {
      var cv = document.createElement("canvas");
      var cvd = cv.getContext("2d");
      var wid = img1.width;
      var hit = img1.height;
      var imgdata;
      var oimgdata;
      var arrayaddress = new Array();
      var m = 0;
      var n = 0;

      cv.width = wid;
      cv.height = hit;
      cvd.drawImage(img1, 0, 0, wid, hit);
      imgdata = cvd.getImageData(0, 0, wid, hit);
      oimgdata = cvd.createImageData(wid, hit);

      arrayaddress = produceLogistic(key, wid).sort(produceLogisticSort).map(x => x[1]);


      for (let i = 0; i < wid; i++) {
        for (let j = 0; j < hit; j++) {
          m = arrayaddress[i];


          oimgdata.data[4 * (m + j * wid)] = imgdata.data[4 * (i + j * wid)];
          oimgdata.data[4 * (m + j * wid) + 1] = imgdata.data[4 * (i + j * wid) + 1];
          oimgdata.data[4 * (m + j * wid) + 2] = imgdata.data[4 * (i + j * wid) + 2];
          oimgdata.data[4 * (m + j * wid) + 3] = imgdata.data[4 * (i + j * wid) + 3];
        }
      }
      cvd.putImageData(oimgdata, 0, 0);
      return [cv.toDataURL(), wid, hit]
    }






    //行+列混淆
    function encryptPE2(img1, key) {
      var cv = document.createElement("canvas");
      var cvd = cv.getContext("2d");
      var wid = img1.width;
      var hit = img1.height;
      var imgdata;
      var oimgdata;
      var o2imgdata;
      var arrayaddress = new Array();
      var x = key;
      var m = 0;
      var n = 0;


      if (wid * hit > SIZE) {
        wid = parseInt(Math.pow(SIZE * img1.width / img1.height, 1 / 2));
        hit = parseInt(Math.pow(SIZE * img1.height / img1.width, 1 / 2));
      }

      cv.width = wid;
      cv.height = hit;
      cvd.drawImage(img1, 0, 0, wid, hit);
      imgdata = cvd.getImageData(0, 0, wid, hit);
      oimgdata = cvd.createImageData(wid, hit);
      o2imgdata = cvd.createImageData(wid, hit);

      for (let j = 0; j < hit; j++) {
        arrayaddress = produceLogistic(x, wid);
        x = arrayaddress[wid - 1][0];
        arrayaddress = arrayaddress.sort(produceLogisticSort).map(a => a[1])
        for (let i = 0; i < wid; i++) {
          m = arrayaddress[i];


          oimgdata.data[4 * (i + j * wid)] = imgdata.data[4 * (m + j * wid)];
          oimgdata.data[4 * (i + j * wid) + 1] = imgdata.data[4 * (m + j * wid) + 1];
          oimgdata.data[4 * (i + j * wid) + 2] = imgdata.data[4 * (m + j * wid) + 2];
          oimgdata.data[4 * (i + j * wid) + 3] = imgdata.data[4 * (m + j * wid) + 3];
        }
      }


      x = key;
      for (let i = 0; i < wid; i++) {
        arrayaddress = produceLogistic(x, hit);
        x = arrayaddress[hit - 1][0];
        arrayaddress = arrayaddress.sort(produceLogisticSort).map(a => a[1])
        for (let j = 0; j < hit; j++) {
          n = arrayaddress[j];



          o2imgdata.data[4 * (i + j * wid)] = oimgdata.data[4 * (i + n * wid)];
          o2imgdata.data[4 * (i + j * wid) + 1] = oimgdata.data[4 * (i + n * wid) + 1];
          o2imgdata.data[4 * (i + j * wid) + 2] = oimgdata.data[4 * (i + n * wid) + 2];
          o2imgdata.data[4 * (i + j * wid) + 3] = oimgdata.data[4 * (i + n * wid) + 3];
        }
      }


      cvd.putImageData(o2imgdata, 0, 0);
      return [cv.toDataURL(), wid, hit]
    }


    function decryptPE2(img1, key) {
      var cv = document.createElement("canvas");
      var cvd = cv.getContext("2d");
      var wid = img1.width;
      var hit = img1.height;
      var imgdata;
      var oimgdata;
      var o2imgdata;
      var arrayaddress = new Array();
      var x = key;
      var m = 0;
      var n = 0;


      cv.width = wid;
      cv.height = hit;
      cvd.drawImage(img1, 0, 0, wid, hit);
      imgdata = cvd.getImageData(0, 0, wid, hit);
      oimgdata = cvd.createImageData(wid, hit);
      o2imgdata = cvd.createImageData(wid, hit);


      for (let i = 0; i < wid; i++) {
        arrayaddress = produceLogistic(x, hit);
        x = arrayaddress[hit - 1][0];
        arrayaddress = arrayaddress.sort(produceLogisticSort).map(a => a[1])
        for (let j = 0; j < hit; j++) {
          n = arrayaddress[j];


          oimgdata.data[4 * (i + n * wid)] = imgdata.data[4 * (i + j * wid)];
          oimgdata.data[4 * (i + n * wid) + 1] = imgdata.data[4 * (i + j * wid) + 1];
          oimgdata.data[4 * (i + n * wid) + 2] = imgdata.data[4 * (i + j * wid) + 2];
          oimgdata.data[4 * (i + n * wid) + 3] = imgdata.data[4 * (i + j * wid) + 3];
        }
      }
      x = key;
      for (let j = 0; j < hit; j++) {
        arrayaddress = produceLogistic(x, wid);
        x = arrayaddress[wid - 1][0];
        arrayaddress = arrayaddress.sort(produceLogisticSort).map(a => a[1])
        for (let i = 0; i < wid; i++) {
          m = arrayaddress[i];


          o2imgdata.data[4 * (m + j * wid)] = oimgdata.data[4 * (i + j * wid)];
          o2imgdata.data[4 * (m + j * wid) + 1] = oimgdata.data[4 * (i + j * wid) + 1];
          o2imgdata.data[4 * (m + j * wid) + 2] = oimgdata.data[4 * (i + j * wid) + 2];
          o2imgdata.data[4 * (m + j * wid) + 3] = oimgdata.data[4 * (i + j * wid) + 3];
        }
      }





      cvd.putImageData(o2imgdata, 0, 0);
      return [cv.toDataURL(), wid, hit]
    }
  </script>

  <div style="position: static; display: none; width: 0px; height: 0px; border: none; padding: 0px; margin: 0px;">
    <div id="trans-tooltip">
      <div id="tip-left-top"
        style="background: url(&quot;chrome-extension://dodigcollhkcpflanilhcefbhbagajfm/imgs/map/tip-left-top.png&quot;);">
      </div>
      <div id="tip-top"
        style="background: url(&quot;chrome-extension://dodigcollhkcpflanilhcefbhbagajfm/imgs/map/tip-top.png&quot;) repeat-x;">
      </div>
      <div id="tip-right-top"
        style="background: url(&quot;chrome-extension://dodigcollhkcpflanilhcefbhbagajfm/imgs/map/tip-right-top.png&quot;);">
      </div>
      <div id="tip-right"
        style="background: url(&quot;chrome-extension://dodigcollhkcpflanilhcefbhbagajfm/imgs/map/tip-right.png&quot;) repeat-y;">
      </div>
      <div id="tip-right-bottom"
        style="background: url(&quot;chrome-extension://dodigcollhkcpflanilhcefbhbagajfm/imgs/map/tip-right-bottom.png&quot;);">
      </div>
      <div id="tip-bottom"
        style="background: url(&quot;chrome-extension://dodigcollhkcpflanilhcefbhbagajfm/imgs/map/tip-bottom.png&quot;) repeat-x;">
      </div>
      <div id="tip-left-bottom"
        style="background: url(&quot;chrome-extension://dodigcollhkcpflanilhcefbhbagajfm/imgs/map/tip-left-bottom.png&quot;);">
      </div>
      <div id="tip-left"
        style="background: url(&quot;chrome-extension://dodigcollhkcpflanilhcefbhbagajfm/imgs/map/tip-left.png&quot;);">
      </div>
      <div id="trans-content"></div>
    </div>
    <div id="tip-arrow-bottom"
      style="background: url(&quot;chrome-extension://dodigcollhkcpflanilhcefbhbagajfm/imgs/map/tip-arrow-bottom.png&quot;);">
    </div>
    <div id="tip-arrow-top"
      style="background: url(&quot;chrome-extension://dodigcollhkcpflanilhcefbhbagajfm/imgs/map/tip-arrow-top.png&quot;);">
    </div>
  </div><!-- Cloudflare Pages Analytics -->
  <script defer="" src="https://static.cloudflareinsights.com/beacon.min.js"
    data-cf-beacon="{&quot;token&quot;: &quot;a598162fc64d42aca87e9cc033dfb748&quot;}"></script>
  <!-- Cloudflare Pages Analytics -->
  <div class="mpa-sc mpa-plugin-article-gatherer mpa-new mpa-rootsc" data-z="100" style="display: block;"
    id="mpa-rootsc-article-gatherer"></div>
  <div class="mpa-sc mpa-plugin-image-gatherer mpa-new mpa-rootsc" data-z="100" style="display: block;"
    id="mpa-rootsc-image-gatherer"></div>
  <div class="mpa-sc mpa-plugin-page-clipper mpa-new mpa-rootsc" data-z="100" style="display: block;"
    id="mpa-rootsc-page-clipper"></div>
  <div class="mpa-sc mpa-plugin-text-gatherer mpa-new mpa-rootsc" data-z="100" style="display: block;"
    id="mpa-rootsc-text-gatherer"></div>
  <div class="mpa-sc mpa-plugin-video-gatherer mpa-new mpa-rootsc" data-z="100" style="display: block;"
    id="mpa-rootsc-video-gatherer"></div>
  <div class="mpa-sc mpa-plugin-side-function-panel mpa-new mpa-rootsc" data-z="110" style="display: block;"
    id="mpa-rootsc-side-function-panel"></div>
  <div class="mpa-sc mpa-plugin-notifier mpa-new mpa-rootsc" data-z="120" style="display: block;"
    id="mpa-rootsc-notifier"></div>
  <div class="mpa-sc mpa-plugin-notification-manager mpa-new mpa-rootsc" data-z="130" style="display: block;"
    id="mpa-rootsc-notification-manager"></div>
  <div id="fatkun-drop-panel">
    <a id="fatkun-drop-panel-close-btn">×</a>
    <div id="fatkun-drop-panel-inner">
      <div class="fatkun-content">
        <svg class="fatkun-icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5892">
          <path
            d="M494.933333 782.933333c2.133333 2.133333 4.266667 4.266667 8.533334 6.4h8.533333c6.4 0 10.666667-2.133333 14.933333-6.4l2.133334-2.133333 275.2-275.2c8.533333-8.533333 8.533333-21.333333 0-29.866667-8.533333-8.533333-21.333333-8.533333-29.866667 0L533.333333 716.8V128c0-12.8-8.533333-21.333333-21.333333-21.333333s-21.333333 8.533333-21.333333 21.333333v588.8L249.6 475.733333c-8.533333-8.533333-21.333333-8.533333-29.866667 0-8.533333 8.533333-8.533333 21.333333 0 29.866667l275.2 277.333333zM853.333333 874.666667H172.8c-12.8 0-21.333333 8.533333-21.333333 21.333333s8.533333 21.333333 21.333333 21.333333H853.333333c12.8 0 21.333333-8.533333 21.333334-21.333333s-10.666667-21.333333-21.333334-21.333333z"
            p-id="5893"></path>
        </svg>
        <div class="fatkun-title">拖拽到此处完成下载</div>
        <div class="fatkun-desc">图片将完成下载</div>
      </div>
      <div id="fatkun-supported-by">AIX智能下载器</div>
    </div>
  </div><iframe src="https://yiban.io/record-extension-install-channel?action=reportToServer"
    style="display: none;"></iframe>
</body>
<div style="all: initial;">
  <div id="__hcfy__" style="all: initial;"></div>
</div>

</html>